import { Menu, PageContent, Selection } from './login'
import { Area } from './area'

/*
 * @Descripttion:
 * @Author: matilda
 * @Date: 2021-12-14 15:45:52
 * @LastEditors: DESKTOP-V2I5033
 * @LastEditTime: 2021-12-16 12:42:17
 */
export interface MenuParams extends PageContent {
  blurry?: string // name、path、title 模糊匹配
  sources?: string
}

export interface Organ extends Selection {
  id?: number | null
  name: string // 组织名
  sort: number // 排序
  pid: number // 父节点ID
  code: string // 组织编码
}

export interface OrganRes {
  content: Organ[] // 返回接口中的内容
  totalElements: number // 返回接口中的数据数量
}

export interface MenuAddParams {
  id?: number | string
  pid: number | string
  type: number
  icon: string
  title: string
  sort: number
  checkHome: boolean
  hidden: boolean
  noCache: boolean
  affix: boolean
  path: string
  permission: string
  sources?: string
}

export interface OrganParams extends PageContent {
  blurry?: string // name,code 模糊匹配
}

export interface RoleParams {
  blurry?: string // name,remark" 模糊匹配
  organCode?: string // 组织机构 模糊匹配
  sources?: string
}

export interface RoleAddParams {
  id?: number
  name: string // 角色名
  remark: string // 备注说明
  permission: string // 权限标识
  menus: {
    id: number
  }[] // 菜单
  organs: {
    id: number
  }[] // 组织机构
  sources?: string
  checkStrictly?: boolean
}

export interface Role {
  id: number
  name: string
  remark: string
  permission: string
  menus: Menu[]
  organs: Organ[]
}

export interface RoleRes {
  content: Role[]
  totalElements: number
}

export interface UserResult {
  id: number
  username: string // 用户名
  name: string // 用户姓名
  phone: string // 电话
  type: string // 账号类型
  gender: string // 用户性别
  roles?: any[] // 角色
  organ: Organ // 组织机构
  area: Area // 行政区划
  createDate: string // 创建日期
}

export interface UserRes {
  content: UserResult[]
  totalElements: number
}

export interface UserSearchParams extends PageContent {
  blurry?: string // usernamename模糊匹配
  organCode?: string // 组织机构 模糊匹配
  startTime?: Date // 开始时间
  endTime?: Date // 结束时间
}

export interface UserParams {
  id?: number | null
  username: string
  name: string
  phone: string
  gender: string
  type: string
  roles: Object[] | null
  organ: Object | null
  area: Object | null
  sources?: string
}

export interface UserDetailParams {
  id: number | null
  sources: string
}

export interface logParams extends PageContent {
  description?: string // 描述
  startTime?: string // 开始时间
  endTime?: string // 结束时间
  username?: string // 操作用户信息
  params?: string // 参数
  logType?: string // 日志类型,默认值：INFO 一般信息、ERROR 错误信息
  time?: number // 耗时,大于多少毫秒、单位毫秒
}
